package com.baby.simple;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Producer {

    public static void main(String[] args) throws IOException, TimeoutException {
        //1.获取一个Connection工程
        ConnectionFactory connectionFactory =new ConnectionFactory();
        //2.给Connection设置连接信息
        //连接主机
        connectionFactory.setHost("192.168.247.132");
        //连接端口
        connectionFactory.setPort(5772);
        //用户名
        connectionFactory.setUsername("admin");
        //用户密码
        connectionFactory.setPassword("123");
        //虚拟主机
        connectionFactory.setVirtualHost("/");
        //3.通过Connection工厂获取一个connection
        Connection connection = connectionFactory.newConnection();
        //4.通过单个Connection获取channel通道
        Channel channel = connection.createChannel();
//        connection.createChannel(int i) -->创造多个通道，以i为分别
        //5.通过channel设置通道详细信息
                /*************************************************
                 //String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments
                 第一个参数：queue:表示队列名称
                 第二个参数：durable:表示当前创建的队列是否支持持久化,通常设置为true，表示支持持久化
                 第三个参数：exclusive:表示是否只能由一个消费者操作这个队列,通常设置false
                 第四个参数：autoDelete:当一个消费者消费完队列中的消息之后，是否自动删除这个队列,通常设置为false
                 第五个参数：arguments:表示队列的设置信息,通常设置为null
                 ************************************************/
                channel.queueDeclare("mirror_simple_queue",true,false,false,null);
         //6.生产者通过channel通道将消息发送到queue队列中
                /*************************************************
                   String exchange, String routingKey, BasicProperties props, byte[] body
                   第一个参数：exchange:表示交换机，如果没有交换机，设置为:""
                   第二个参数：表示路由key,暂时使用队列名称充当路由key
                   第三个参数：表示消息本身的设置信息,目前设置为null
                   第四个参数:表示消息本身的内容
                 ************************************************/
//        byte[] bytes = "呼叫宝宝！".getBytes();
        channel.basicPublish("","mirror_simple_queue",null,"呼叫宝宝2！".getBytes());
        //7.释放资源
        channel.close();
        connection.close();

    }

}
